Simplified sharing of content among computing devices

ABSTRACT

In one general aspect, a method can include displaying, on a display device included in a computing device, content in an application executing on the computing device. The method can further include displaying, in a user interface on the display device, at least one identifier, receiving a selection of the at least one identifier, and initiating casting in response to receiving the selection of the at least one identifier.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. Pat. Application No.16/806,434, filed Mar. 2, 2020, which is a continuation of U.S. Pat.Application No. 15/894,646, filed Feb. 12, 2018, which is a continuationof U.S. Pat. Application No. 14/540,718, filed Nov. 13, 2014, each ofwhich is incorporated by reference herein in its entirety.

TECHNICAL FIELD

This description generally relates to computing devices. The descriptionin particular, relates to the use of computing devices forvideoconferencing.

BACKGROUND

Videoconferencing systems can allow participants (users) in multiplelocations to communicate simultaneously with one another using two-wayvideo and audio transmissions. A typical requirement for avideoconferencing system, therefore, can be the ability for one or moreof the participants in the videoconference to be able to project contentfrom a computing device into the videoconference. In some cases, thehost may be required to install and run specialized software(applications) on a computing device for the host. The host may alsoneed to know how to use the specialized software and how to use it inconjunction with activating the videoconferencing system in order toschedule, setup, and run the videoconference. The host and participantscan follow a series of steps in order for the host and the participantsto connect to, project to, and otherwise participate in thevideoconference. However, known videoconferencing systems may notprovide proper or efficient access to participants.

Thus, a need exists for systems, methods, and apparatus to address theshortfalls of present technology and to provide other new and innovativefeatures.

SUMMARY

In one general aspect, a method can include displaying, on a displaydevice included in a computing device, content in an applicationexecuting on the computing device, determining that the computing deviceis proximate to a videoconferencing system, displaying, in a userinterface on the display device, at least one identifier associated witha videoconference, receiving a selection of the at least one identifier,and initiating the videoconference on the videoconferencing system inresponse to receiving the selection of the at least one identifier suchthat the content is provided for display on a display device included inthe videoconferencing system.

Example implementations may include one or more of the followingfeatures. For instance, determining that the computing device isproximate to the videoconferencing system can include determining thatthe computing device is proximate to the videoconferencing system basedon a threshold distance. Determining that the computing device isproximate to the videoconferencing system can include the use of one ormore of a WiFi signature, Bluetooth Low Energy (LE) technology, and anaudio token. The application can be a web browser application. Thecontent can be included in a tab of the web browser application. The tabcan be displayed on the display device included in the computing devicewhen the video conference is initiated. The tab can be a first tab, andthe method can further include displaying, on the display deviceincluded in the computing device, other content in a second tab of theweb browser application while continuing to provide the content includedin the first tab of the web browser application for display on thedisplay device included in the videoconferencing system. The displaying,in the user interface on the display device, the at least one identifierassociated with the videoconference can include displaying a pluralityof identifiers including the at least one identifier. Displaying theplurality of identifiers can include deduplicating the plurality ofidentifiers. The method can further include providing, by a calendarapplication executing on the computing device, the at least oneidentifier associated with the videoconference. The identifier can be afirst identifier and the videoconference can be a first videoconference.The method can further include receiving a manual entry of a secondidentifier associated with a second videoconference; and based onreceiving the manual entry of the second identifier associated with thesecond videoconference, the method can further include initiating thesecond videoconference on the videoconferencing system. The content canbe included in a desktop or a window included in a plurality of windowsdisplayed on the display device

In another general aspect, a system can include a computing deviceincluding a first display device being configured to display content inan application executing on the computing device, and determine that thecomputing device is proximate to a videoconferencing system. The systemcan further include a videoconferencing system including avideoconferencing device and a second display device, the computingdevice being configured to automatically initiate a videoconference onthe videoconferencing system, and the videoconferencing device beingconfigured to receive the content from the computing device for displayon the second display device.

Example implementations may include one or more of the followingfeatures. For instance, the videoconferencing system can further includea camera and a microphone. The videoconferencing system can beconfigured to disable the camera and the microphone when thevideoconference is initiated on the videoconferencing system.Determining that the computing device is proximate to thevideoconferencing system can include determining that the computingdevice is located in the same room as the videoconferencing system.Determining that the computing device is proximate to thevideoconferencing system can include the use of one or more of a WiFisignature, Bluetooth Low Energy (LE) technology, and an audio token.

In yet another general aspect, a non-transitory, machine-readable mediumhaving instructions stored thereon, the instructions, when executed by aprocessor, can cause a computing device to display, on a display deviceincluded in a computing device, content in an application running on thecomputing device, receive a selection of a videoconferencing iconincluded in the application, display, in a user interface on the displaydevice, at least one identifier associated with a videoconferenceincluded in a calendar associated with a user of the computing device,receive a selection of the at least one identifier, and initiate thevideoconference on a videoconferencing system in response to receivingthe selection of the at least one identifier such that the content isprovided for display to the user on a display device included in thevideoconferencing system. Displaying, in a user interface on the displaydevice, at least one identifier associated with a videoconference caninclude displaying a plurality of identifiers including the at least oneidentifier. Displaying the plurality of identifiers can includededuplicating the plurality of identifiers. The application can be avideoconferencing-enabled application. The computing device can be oneof a desktop computer, a laptop computer, a tablet computer, and a smartphone.

The details of one or more implementations are set forth in theaccompanying drawings and the description below. Other features will beapparent from the description and drawings, and from the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1A is a block diagram of an example system that can be used forvideoconferencing.

FIG. 1B is a block diagram showing an example flow of procedure calls,signals, and media in the example system shown in FIG. 1A.

FIG. 1C shows an example of a pull-down menu that can displayindications of information and data determined by discovery APIs andprovided by a server to a computing device.

FIG. 2A is a diagram that shows an example user interface on a displaydevice included in a videoconferencing system.

FIG. 2B is a diagram that shows an example videoconference that includesmultiple participants.

FIG. 2C is a diagram that shows an example of a pop-up menu that candisplay indications of the information and data determined by discoveryAPIs and provided by a server to a computing device.

FIG. 2D is a diagram that shows an example videoconference where asecond participant can provide videoconferencing content.

FIG. 2E shows an example of a pull-down menu that can displayindications of information and data determined by discovery APIs andprovided by a server to a computing device.

FIG. 2F is a diagram that shows the example videoconference where athird participant can provide videoconferencing content.

FIG. 2G is a diagram that shows the content displayed on a displaydevice further including an alert window.

FIG. 2H is a diagram that shows a first participant navigatingto/selecting a tab of a web browser application.

FIG. 2I is a diagram that shows an example user interface displayed on adisplay device that allows a user to enter a name for a newvideoconference.

FIG. 3A is a diagram that shows another example videoconference thatincludes multiple participants.

FIG. 3B shows an example of another pull-down menu that can displayindications of the information and data determined by discovery APIs 150and provided by a server 142a to a computing device.

FIG. 3C is a diagram that shows another example user interface displayedin a display area that allows a user to enter a name for a newvideoconference.

FIG. 4 is a flowchart that illustrates a method of providing content toa videoconference.

FIG. 5 shows an example of a computer device and a mobile computerdevice that can be used to implement the techniques described here.

Like reference symbols in the various drawings indicate like elements.

DETAILED DESCRIPTION

A videoconference connection and participation process can provide alevel of access control to a videoconference. In some cases, this levelof access control may be desirable when the information to be discussedduring the videoconference is highly sensitive and confidential.

A desired feature for a videoconferencing system can be the ability forone or more participants in the videoconference to project content fromrespective computing devices into the videoconference without requiringa multitude of complicated authentication steps for allowing theparticipant access to the videoconference using the respective computingdevice. For example, multiple users can be sitting in a conference roomthat includes a videoconferencing system. Each of the multiple users canhave a one or more computing devices along with them in the conferenceroom. The computing devices can include, but are not limited to, desktopcomputers, laptop computers, tablet computing devices, smartphones, andpersonal digital assistants. One or more features can be incorporatedinto videoconferencing systems and applications that can simplify theprocess of setting up, scheduling, connecting to andproviding/projecting content into a videoconference.

In some implementations, each computing device may not have informationabout a context for the videoconference. A user (e.g., a videoconferencehost) can follow a series of steps in order to establish a context aboutthe videoconference. For example, the context can include establishing,by a user using a computing device, a unique identifier (e.g., aUniversal Resource Locator (URL)) for the meeting. This user can beconsidered the host of the videoconference and can distribute theinformation about the videoconference to the other videoconferenceparticipants (share the unique identifier for the meeting with the othervideoconference participants). An example of these implementations isdescribed with reference to FIGS. 2A-F.

In some implementations, a computing device can establish a context forthe videoconference based on a detected proximity of the computingdevice to the videoconferencing system. For example, a videoconferencingsystem can detect approximate proximity of each respective computingdevice for the users sitting in a conference room that includes thevideoconferencing system. For example, the videoconferencing system candetect the approximate proximity of each respective computing deviceusing technologies such as Wi-Fi beacons or Bluetooth communicationprotocols. The videoconferencing system can confirm a physicalco-location of a computing device of a user with the videoconferencingsystem based on the detected proximity (e.g., based on a thresholddistance) of the computing device to the videoconferencing system.

In some implementations, the basis of the authentication on the detectedproximity can be that the computing device is within a thresholddistance of the videoconferencing system. In some implementations, thebasis of the authentication on the detected proximity can be that thecomputing device is within a communication range of a particularcommunication protocol. In some implementations, the basis of theauthentication on the detected proximity can be that the computingdevice is in the same room as the videoconferencing system. In someimplementations, the computing device of a second user being within athreshold distance or within a communication range of a particularcommunication protocol to a computing device of a first user that isalready authenticated to the videoconferencing system can result in theauthentication of the second user to the videoconferencing system.

This automatic authentication process can eliminate the need for amanual authentication process that may involve multiple steps and theneed for a unique identifier to be established and provided by a hostfor the videoconference. In effect, any authenticated user can projectcontent for a respective computing device into the videoconference. Anexample of these implementations and the authentication processes aredescribed with reference to at least FIGS. 2A-D.

In some implementations, one or more users can participate in thevideoconference from a location remote from the location of thevideoconferencing system. For example, a participant can be locatedoutside of the conference room that includes the videoconferencingsystem. The participant can be located in an office, at home, or in ahotel room, for example. In some cases, the remote user may be providedwith information (e.g., a URL) for accessing the videoconference alongwith any additional authentication information (e.g., a password or passcode) that may be needed to authenticate the user for access to thevideoconference. In some cases, the remote user can access anapplication running on a computing device that can provide an identifierfor the videoconference that the user can select in order to remotelyjoin (and project content into) the videoconference. An example of theseimplementations is described with reference to FIGS. 2A-F.

In some cases, one of the users may be the host of the videoconference.The host can perform the necessary steps for activating thevideoconferencing system, and for providing information needed by theother users so that they can connect to and participate in thevideoconference using a respective computing device. In some cases, thecomputing device for the host can project (provide) content to thevideoconferencing system. In these cases, the computing device for thehost can be considered a projecting device. The content can be displayedon a display device (e.g., a high definition television (HDTV)) includedin the videoconferencing system. In addition, the content can includeaudio content the videoconferencing system can process and output, forexample, to one or more speakers included in the videoconferencingsystem. The content can then be viewed by/heard by the multiple userslocated in the conference room. Once a user joins the videoconference,the computing device of the user can also project (provide) content tothe videoconferencing system. FIGS. 2A-I describe setting up, joining,and participating in a videoconference by multiple users in more than onlocation. In other cases, any of the participants in a videoconferencecan use a computing device to project (provide) content to thevideoconferencing system.

In some implementations, multiple users may gather in a conference roomthat includes an idle videoconferencing system. One or more of themultiple users may have with them a respective computing device. A usermay want to use the display device included in the videoconferencingsystem to display information (content) from the computing device thatthe user would like to share with the other users located in theconference room. However, the user does not want to activate a cameraand a microphone included in the videoconferencing system (e.g., forsecurity and confidentiality reasons). In these implementations, theuser can access an application running on a computing device that canprovide an identifier for the idle videoconferencing system. The usercan select the idle videoconferencing system as a target display devicein order to display content from the computing device to the displaydevice of the videoconferencing system while deactivating the camera andthe microphone included in the videoconferencing system. An example ofthese implementations is described with reference to FIGS. 3A-C.

FIG. 1A is a block diagram of an example system 100 that can be used forvideoconferencing. The example system 100 includes a plurality ofcomputing devices 102 a-c (e.g., a laptop computer, a tablet computer,and a smart phone, and respectively). An example computing device 102 a(e.g., a laptop or notebook computer) can include one or more processors(e.g., client central processing unit (CPU) 104) and one or more memorydevices (e.g., client memory 106)). The computing device 102 a canexecute a client operating system (O/S) 108 and one or more clientapplications (e.g., a web browser application 110) that can display auser interface (UI) (e.g., web browser UI 112) on a display device 120included in the computing device 102 a. Though not shown in FIG. 1A, thecomputing devices can also include a desktop computing device.

The system 100 includes a computer system 130 that can include one ormore computing devices (e.g., server 142 a) and one or morecomputer-readable storage devices (e.g., database 142 b). The server 142a can include one or more processors (e.g., server CPU 132), and one ormore memory devices (e.g., server memory 134). The computing devices 102a-c can communicate with the computer system 130 (and the computersystem 130 can communicate with the computing devices 102 a-c) using anetwork 116. The server 142 a can execute a server O/S 136.

The system 100 includes a videoconferencing device 160. The computingdevices 102 a-c can interface to/communicate with the videoconferencingdevice 160 using the network 116. Similarly, the videoconferencingdevice 160 can interface to/communicate with the computing devices 102a-c. The videoconferencing device 160 can communicate with the computersystem 130 using the network 116. Similarly, the computer system 130 cancommunicate with the videoconferencing device 160 using the network 116.The videoconferencing device 160 is included in a videoconferencingsystem 158 that can include a display device 162, a microphone 164, acamera 166, and a remote control 168.

In some implementations, the computing devices 102 a-c can be laptop ordesktop computers, smartphones, personal digital assistants, portablemedia players, tablet computers, or other appropriate computing devicesthat can communicate, using the network 116, with other computingdevices or computer systems. In some implementations, the computingdevices 102 a-c can perform client-side operations, as discussed infurther detail herein. Implementations and functions of the system 100described herein with reference to computing device 102 a, may also beapplied to computing device 102 b and computing device 102 c and othercomputing devices not shown in FIG. 1 that may also be included in thesystem 100. The computing device 102 b includes a display area 124. Thecomputing device 102 c includes a display area 122.

In some implementations, the computer system 130 can represent more thanone computing device working together to perform server-side operations.For example, though not shown in FIG. 1 , the system 100 can include acomputer system that includes multiple servers (computing devices)working together to perform server-side operations. In this example, asingle proprietor can provide the multiple servers. In some cases, theone or more of the multiple servers can provide other functionalitiesfor the proprietor. In a non-limiting example, the computer system canalso include a search server and a web crawler server.

In some implementations, the network 116 can be a public communicationsnetwork (e.g., the Internet, cellular data network, dialup modems over atelephone network) or a private communications network (e.g., privateLAN, leased lines). In some implementations, the computing devices 102a-c can communicate with the network 116 using one or more high-speedwired and/or wireless communications protocols (e.g., 802.11 variations,WiFi, Bluetooth, Transmission Control Protocol/Internet Protocol(TCP/IP), Ethernet, IEEE 802.3, etc.).

In some implementations, the web browser application 110 can include orbe associated with one or more browser-based applications (e.g.,browser-based application 128). The browser-based application 128 can beexecuted/interpreted by the web browser application 110. Thebrowser-based application 128 executed by the web browser application110 can include code written in a scripting language, such as,JavaScript, VBScript, ActionScript, or other scripting languages.

A browser-based application may be configured to perform a single taskor multiple tasks for a user. In such an implementation, thebrowser-based application may be configured to be executed orinterpreted by the web browser. This is compared with the nativeapplications (e.g., native application 144) that include machineexecutable code and are configured to be executed directly via theoperating system of the client device, whereas, a browser-basedapplication may be incapable of execution or display without the aid ofthe web browser. Thus, browser-based applications can be run inside abrowser with a dedicated user interface, and can provide functionalityand an experience that is more rich and interactive than a standalonewebsite but are less cumbersome and monolithic than a native application144. Examples of browser-based applications include, but are not limitedto, games, photo editors, and video players that can run inside the webbrowser application 110. The browser-based application 128 can provide adedicated UI for display on the display device 120.

Browser-based applications can be “hosted applications” or “packagedapplications.” Hosted applications may include at least a portion of aweb site that itself includes web pages, in addition to some metadatathat may be especially pertinent to the browser-based application or tothe user of the browser-based application to allow the browser-basedapplication to perform some particular functionality for the user.Packaged applications can be thought of as browser-based applicationswhose code is bundled, so that the user can download all of the contentof the browser-based application for execution by the browser. Apackaged browser-based application may not need to have network accessto perform its functionality for the user, and rather may be executedsuccessfully by the browser locally on the computing device withoutaccess to a network. Packaged browser-based applications have the optionof using Extension APIs, allowing packaged applications to change theway the browser behaves or looks.

In some implementations, the computing device 102 a can run, or causethe operating system 108 to execute, the web browser application 110.The web browser application 110 can then provide, in the web browser UI112, a plurality of panes or tabs 114 a-c. The web browser UI 112 can bea visual area, usually rectangular, containing some kind of userinterface. In a graphical user interface (GUI) used in the computingdevice 102 a, the web browser UI 112 can be a two-dimensional objectarranged on a plane of the GUI known as a desktop. The web browser UI112 can include other graphical objects (e.g., a menu-bar, toolbars,controls, icons). The web browser UI 112 can display the graphicalobjects on the display device 120. A user of the computing device 102 acan interact with the graphical objects to provide input to, orotherwise control the operation of, the web browser application 110.

The web browser UI 112 can include a working area in which a document,an image, folder contents, or other objects including information ordata for the browser-based application 128 can be displayed. The workingarea can include one main object (e.g., a single web document interface)or multiple objects (e.g., more than one web document interface), whereeach object can be displayed in a separate window (or tab). Each tab caninclude a UI. In some applications, specifically web browserapplications, multiple documents can be displayed in individual tabs 114a-c. The tabs 114 a-c can be displayed one at a time, and are selectableusing a tab-bar, which can reside above the contents of an individualwindow. That is, one selected tab (e.g., tab 114 a) can be consideredforward-facing (in the foreground). The tab 114 a can displayinformation or content to a user in the web browser UI 112, while thecontent of other tabs 114 b, 114 c can be considered “hidden” (in thebackground).

A natively operating application 146 can be an application that is codedusing only web technology (defined here as code that can be implementeddirectly by a web browser application), such as JavaScript,ActionScript, HTML, or CSS. For example, the computing device 102 a candownload and install the natively operating application 146 from amarketplace server using a web browser application (e.g., web browserapplication 110). The natively operating application 146 may operateusing a runtime 148. The natively operating application 146 may beconfigured to be executed directly by the CPU 104 or by the O/S 108,using a runtime 148, for example. Because natively operating application146 is coded using web technologies, no compilation step is required.

In some implementations, the computing devices 102 a-c can communicatedirectly with the videoconferencing device 160 using, for example one ormore high-speed wired and/or wireless communications protocols such asBluetooth, Bluetooth Low Energy (Bluetooth LE), and WiFi. Thevideoconferencing device 160 can use the direct communication toidentify one or more computing devices that are in proximity to thevideoconferencing device 160. In these implementations, identifying theone or more computing devices that are in proximity to thevideoconferencing device 160 includes determining that the one or morecomputing devices are within a communication range of the communicationprotocol.

In some implementations, the videoconferencing device 160 can useshort-range communications to “listen” for broadcasts from short-rangecommunication enabled computing devices (e.g., the computing devices 102a-c). For example, the short-range communication can use Bluetooth LEwhen transmitting and receiving broadcasts. The videoconferencing deviceis determined to be in proximity to the computing device when thecomputing device and the videoconferencing device are within the rangeof the short-range communication system (e.g., are within the range ofBluetooth LE).

In some implementations, the system 100 can use WiFi scans, WiFi signalstrength information, or WiFi signature matching to determine proximityof a WiFi-enabled computing device to the videoconferencing device 160.For example, the WiFi-enabled computing device can capture a signalstrength of a WiFi signal received from the videoconferencing device160. The captured strength of the signal can be indicative of a distancebetween the videoconferencing device 160 and the computing device andcan be referred to as a received signal strength indicator (RSSI). Acopresence application processing interface (API) 156 included indiscovery APIs on the server 142 a can determine that the capturedstrength of the signal is within a range indicative of an acceptableproximity of the computing device to the videoconferencing device 160.For example, the range (e.g., threshold range) can be stored in thememory 134.

In another example, the copresence API 156 can use a set of capturedsignal strengths for sampled reference locations with respect to thevideoconferencing device 160 to determine if a WiFi-enabled computingdevice is proximate to the videoconferencing device 160. The capturedsignal strengths for the sampled reference locations with respect to thevideoconferencing device 160 can comprise a database of signal strengthsignatures for the location of the videoconferencing device 160. Forexample, the signal strength signatures can be stored in the database142 b. The WiFi-enabled computing device can capture a signal strengthof a WiFi signal received from the videoconferencing device 160 (asignal strength signature for the location of the WiFi-enabled computingdevice). The copresence API 156 can compare the captured signal strengthto the signal strength signatures stored in the database 142 b todetermine a closest match or matches. The copresence API 156 can use thedetermined closest match or matches to determine the proximity of theWiFi-enabled computing device to the videoconferencing device 160.

In some implementations, the system 100 can use an audio token todetermine proximity of a computing device to the videoconferencingdevice 160. The system can use the audio token in addition to (or as analternative to) one or more of the short-range communications, the WiFilocation tracking and the WiFi signature matching when determiningproximity of a computing device to the videoconferencing device 160. Forexample, the videoconferencing device 160 can receive a digitizedversion of an audio token from the computer system 130 by way of thenetwork 116. In some implementations, the database 142 b can store thedigitized version of the audio token. In some implementations, thememory 134 can store the digitized version of the audio token. Thevideoconferencing device 160 can send/emit the audio token using one ormore speakers included in the videoconferencing system 158. Any (or all)of the computing devices 102 a-c can receive/pick up the audio token.For example, the recipient computing device (e.g., computing device 102a) can receive/pick up the audio token and send a digitized version ofthe received audio token to the computer system 130 using the network116.

The copresence API 156 can verify/confirm that the audio token sent tothe computer system 130 from the computing device (e.g., computingdevice 102 a) was the actual audio token sent by the videoconferencingdevice 160. The audio token confirmation can be used along with/inaddition to short-range communications, WiFi location tracking using anRSSI or WiFi signature matching to determine and confirm the proximityof the computing device (e.g., computing device 102 a) to thevideoconferencing system (e.g., the videoconferencing device 160). Onceproximity is determined, a user of the computing device (e.g., computingdevice 102 a) can participate in/join a videoconference that is usingand/or being conducted by or hosted by the videoconferencing system(e.g., the videoconferencing device 160).

In some implementations, the copresence API 156 can use functions thatyield an identifier for the videoconferencing device 160. Avideoconference management API 172 included in the server 142 a can usethe identifier to communicate with the videoconferencing device 160 inorder to query a status of the videoconferencing device 160 and obtainan indicator associated with the conference (e.g., a name for theconference) that the videoconferencing device 160 is being used in. Insome implementations, the copresence API 156 can determine if thevideoconferencing device 160 is already participating in or hosting aconference. In these cases, the copresence API 156, when confirming theproximity of the WiFi-enabled computing device to the videoconferencingdevice 160, can provide a user of the WiFi-enabled computing device theindicator associated with the conference (e.g., a name for theconference) in the web browser UI 112.

A conferences API 154 can determine/discover one or more conferencesthat a user of a computing device is currently participating in and/orinvited to participate in. For example, the computing device 102 a canaccess the conferences API 154 included in the server 142 a using thenetwork 116. A user of the computing device 102 a can interact with theconferences API 154 to schedule, setup, start, or join a conference(e.g., a videoconference).

A calendar API 152 can provide information and data about one or moreconferences that a user of a computing device (e.g., the computingdevice 102 a) may have scheduled and included as calendar entries in acalendar associated with the user. The calendar API 152 can provide theuser of the computing device (e.g., the computing device 102 a) anindicator associated with the conference (e.g., a name for theconference) for each of the one or more scheduled conferences in the webbrowser UI 112.

The server 142 a can include a videoconferencing application 170 thatincludes a videoconference management API 172, a media session control174, and a distributor 176. The videoconference management API 172 canprovide a signaling interface for a videoconferencing platform or clientrunning in a web browser application (e.g., the web browser application110). The videoconference management API 172 can provide a signalinginterface for a videoconferencing-enabled application 140 running on thecomputing device 102 a. The videoconferencing client and/or thevideoconferencing-enabled application 140 can communication with andinterface to the videoconferencing application 170.

A media session control 174 can provide a media signaling channelbetween the videoconference management API 172 and the videoconferencingclient. The media session control 174 can provide a media signalingchannel between the videoconference management API 172 and thevideoconferencing application 170.

A distributor 176 can transform and distribute the media stream providedby a computing device (e.g., the computing device 102 a) participatingin a videoconference to the videoconferencing device 160 and to othercomputing devices that may also be participating in the videoconference,where the other computing devices can be located remote from thevideoconferencing device 160 (e.g., the other computing devices arelocated outside of a room or designated area where the videoconferencingdevice 160 resides). For example, the distributor 176 can identify oneor more elements of the media stream that can be sent to each computingdevice participating in a videoconference based on bandwidth andcapabilities of each computing device. A display device included in theremote computing device can display the video content of the mediastream received by a remote computing device. An audio processorincluded in the remote computing device can receive the audio content ofthe media stream. The audio processor can provide the audio content toone or more speakers that are included in the remote computing device.

FIG. 1B is a block diagram showing an example flow of procedure calls,signals, and media in the example system 100 shown in FIG. 1A. Forexample, referring to FIG. 1B and FIG. 1A, a user of the computingdevice 102 a requests information about videoconferencing.

FIG. 1C shows an example of a pull-down menu 138 that can displayindications of the information and data determined by the discovery APIs150 and provided by the server 142 a to the computing device 102 a inresponse to the remote procedure calls 103.

The computing device 102 a can send/provide the information and data(content) displayed in the web browser UI 112 of a particular tab (e.g.,tab 114 a) to the videoconferencing device 160 for display on a displaydevice 162 included in the videoconferencing system 158. Thevideoconferencing device 160 can display the content on the displaydevice 162 during the videoconference.

In some implementations, a user can run the videoconferencing-enabledapplication 140 on the computing device 102 a. Thevideoconferencing-enabled application 140 can display content on thedisplay device 162 of the videoconferencing system 158 during thevideoconference directly from one or more servers without the contentneeding to be first downloaded to the computing device 102 a and thenencoded in real-time as a video stream.

In some implementations, a web browser application (e.g., the webbrowser application 110) can provide or “cast” a first tab or page ofthe web browser application (e.g., the tab 114 a). In someimplementations, the web browser application can include an extensionthat runs in the web browser application where the extension provides auser interface (e.g., web browser UI 112) for initiating and controllingthe casting of the first tab. In some implementations, the web browserapplication can provide a user interface (e.g., web browser UI 112) forinitiating and controlling the casting of the first tab. In addition,for example, a Web Real-Time Communication (WebRTC) application programinterface (API) can be used for browser-based real-time communications.

A user of the computing device 102 a can provide or “cast” the first tab(e.g., the tab 114 a) for viewing on the display device 162 of thevideoconferencing device 160 using the user interface (e.g., web browserUI 112) provided by the web browser application or the web browserapplication extension.

In some implementations, a videoconferencing client interfaces with theweb browser application 110. A user can select a videoconferencing icon118 included in the web browser application 110 to project (provide)content requested by the videoconferencing-enabled application 140 tothe videoconferencing system 158. The videoconferencing clientmakes/performs remote procedure calls 103 to the discovery APIs 150 byway of the network 116.

In some implementations, a videoconferencing client can be partof/included in an application (e.g., the videoconferencing-enabledapplication 140). The user of the computing device 102 a can launch/runthe application. A user interface for the application can include avideoconferencing icon that when selected can project (provide) contentrequested by the videoconferencing-enabled application 140 to thevideoconferencing system 158. In some cases, the user of the computingdevice 102 a and the other participants in a videoconference can seedifferent views. For example, the other participants in thevideoconference can view content requested by thevideoconferencing-enabled application 140 on the display device 162 ofthe videoconferencing system 158 (e.g., a bar graph showing sales data)while the user of the computing device 102 a can be viewing othercontent (e.g., speaker notes about the sales data).

Whether by a native application or by a web browser application, thediscovery APIs 150 included in the server 142 a can determine/discoverone or more available videoconferencing options for a user. For example,the copresence API 156 can determine/discover videoconferencing systemsproximate to the computing device 102 a (e.g., the videoconferencingdevice 160). The calendar API 152 can identify one or more scheduledconferences included in a calendar associated with the user of thecomputing device 102 a. The conferences API 154 can identify one or moreconferences that the user of the computing device 102 a may be currentlyparticipating in and/or that the user may be invited to participate in.

The computing device 102 a can display the pull-down menu 138 on thedisplay device 120 in response to receiving a selection of thevideoconferencing icon 118. Menu entry 126 a included in the pull-downmenu 138 is indicative of a conference that the user of the computingdevice 102 a may be currently participating in and/or invited toparticipate in. Menu entry 126 b is indicative of a videoconferencingsystem that the copresence API 156 has determined is in proximity to thecomputing device 102 a (e.g., in proximity to the videoconferencingdevice 160). Menu entry 126 c is indicative of a calendar entry for aconference where the calendar entry is in a calendar associated with theuser of the computing device 102 a. The example pull-down menu 138 canbe displayed, as shown in FIG. 1A, in the tab 114 a of the web browserapplication 110. In implementations where a videoconferencing client ispart of/included in an application, a pull-down menu similar to thepull-down menu 138 can also be displayed in a user interface of theapplication. The menu entries 126 a-c can be considered identifiers forrespective meetings and/or videoconferences.

The user can select one of the menu entries 126 a-c in order to project(provide) content to the videoconferencing system 158. For example, theuser can select menu entry 126 b in order to project (provide) contentto the videoconferencing system 158. The computing device 102 a makesone or more remote procedure calls 103 to the discovery APIs 150 inorder to determine and authenticate the proximity of the computingdevice 102 a to the videoconferencing device 160 as described withreference to FIG. 1A.

As shown in FIG. 1C and referring to FIGS. 1A and 1B, the user can berunning a browser-based application (e.g., the browser-based application128) that displays a car image 180 (as an example image) in the tab 114a. By selecting the videoconferencing icon 118 while the car image 180is displayed in the tab 114 a, the computing device 102 a, onceauthenticated to access the videoconferencing device 160 and participatein a videoconference hosted by/provided by the videoconferencing device160, can present, provide, cast, or capture and mirror the informationand data included in the tab 114 a (e.g., the car image 180) to thevideoconferencing device 160. The videoconferencing system 158 candisplay the information and data included in the tab 114 a (e.g., thecar image 180) on the display device 162.

In some implementations, for example, a user can be running anapplication (e.g., the native application 144 or the natively operatingapplication 146) that streams audio and video content to the displaydevice 120 of the computing device 102 a. The user can select avideoconferencing icon that can be displayed in a user interface of theapplication. The selection of the videoconferencing icon can launch avideoconference client that is included in or that is part of theapplication. The computing device 102 a, once authenticated to a accessthe videoconferencing device 160 and participate in a videoconferencehosted by/provided by the videoconferencing device 160, can present,provide, cast, or capture and mirror the streaming audio and videocontent to the videoconferencing device 160. The videoconferencingsystem 158 can provide the video content to the display device 162 andcan provide the audio content to one or more speakers included in thevideoconferencing system 158.

In some implementations, a user can choose to present, provide, cast, orcapture and mirror the contents of the desktop displayed on the displaydevice 120 included in the computing device 102 a to thevideoconferencing device 160. In some implementations, the applicationmay allow the user to select a window from a plurality of windowsdisplayed on the display device 120 of the computing device 102 a topresent, provide, cast, or capture and mirror to the videoconferencingdevice 160.

Referring to FIG. 1B, for example, the computing device 102 a canprovide a signal 105 to and receive a signal 105 from thevideoconference management API 172 using the network 116. Thevideoconference management API 172 can provide a signaling interface forthe videoconference client. The videoconference management API 172 canprovide a signal 107 to and receive a signal 107 from the media sessioncontrol 174 in order to open/establish a media signaling channel betweenthe videoconference management API 172 and the videoconference client.The media session control 174 can provide a signal 109 to and receive asignal 109 from the videoconferencing device 160 using the network 116in order to open/establish a media signaling channel between thevideoconference management API 172 and the videoconferencing device 160.

The computing device 102 a can provide a media stream 117 that includesthe information and data (content) for use by the videoconferencingdevice 160 to the distributor 176 included in the server 142 a by way ofthe network 116. As described, the content can include image orstreaming video data for display on the display device 162 and, in somecases, audio data for output on one or more speakers included in thevideoconferencing system 158. The distributor 176 provides the mediastream 117 that includes the image data (and in some cases the audiodata) to the videoconferencing device 160 by way of the network 116. Thevideoconferencing device 160 provides the media stream 117 that includesthe image data to the display device 162. In some cases, thevideoconferencing device 160 provides the media stream 117 that includesthe audio data to the one or more speakers included in thevideoconferencing system 158.

For example, the computing device 102 a can provide videoconferencingcontrol messages (commands and data) to the videoconferencing device 160using the media signaling channel. The control messages can include, butare not limited to, render zoom, enable/disable muting, andpause/restart media stream. The render zoom control message can causethe videoconferencing device 160 to control the zooming of the imagedisplayed on the display device 162 by controlling the content of amedia stream 115 provided to the display device 162. The render mutingcontrol message can cause the videoconferencing device 160 tomute/unmute audio content of the videoconference by controlling a mediastream 111 provided to one or more speakers and/or received from themicrophone 164. In cases where the information and data (content) foruse by the videoconferencing device 160 is streaming video and/or audiocontent, the pause/restart media stream message can cause thevideoconferencing device 160 to pause and restart streaming content bypausing and restarting the media stream 115 provided to the displaydevice 162 and by pausing and restarting the media stream 111 providedto one or more speakers included in the videoconferencing system 158.The camera 166 can provide video content 113 to the videoconferencingdevice 160.

In some implementations, the network 116 can be a local area network(LAN). The computing device 102 a, the server 142 a, and thevideoconferencing device 160 can communicate using the LAN. In theseimplementations, based on the use of the LAN, the quality of the mediastream 117 may be greater than if one or more of the computing device102 a, the server 142 a, and the videoconferencing device 160 were notconnected to the LAN, but to another network (e.g., the Internet).

In some implementations, the entries included in a pull-down menudisplayed to a user of a computing device in response to selection of avideoconferencing icon by the user can be determined based on a sign-instatus of a user. For example, a domain can be associated with avideoconference. The domain can be represented using a domain name thatidentifies a network resource or website. If a user is signed into afirst domain using a first user account, the entries included in thepull-down menu can be indicative of conferences associated with thefirst domain and of videoconferencing systems associated with the firstdomain. In addition, or in the alternative, the entries included in thepull-down menu can be indicative of calendar entries associated with thefirst user account on the first domain. If a user has multiple useraccounts on the first domain, signing into a second user account on thefirst domain can result in displaying entries included in the pull-downmenu that can be indicative of calendar entries associated with thesecond user account on the first domain. If a user signs into a seconddomain, the entries included in the pull-down menu will be indicative ofconferences associated with the second domain and of videoconferencingsystems associated with the second domain. In addition, or in thealternative, the entries included in the pull-down menu can beindicative of calendar entries associated with the user account on thesecond domain.

In some implementations, a user may be signed into multiple useraccounts at the same time that are on different domains. In some cases,when the user attempts to create/join a conference, the first accountthat matches the domain of the conference will be used to join theconference. In some cases, when the user attempts to create/join aconference, the user may be prompted to select which of the multipleaccounts they would like to use when creating/joining a conference. Insome cases, if the user has no accounts in a domain, a display deviceincluded in a computing device can display a user interface to confirman account that should be used to create/join a conference. For example,a user may have a work user account and a personal user account. Theuser may select the work user account when creating/joining a conferencefor work. The user may select the personal user account whencreating/joining a conference for personal use.

In some cases, a user may not be a member of a domain (or may not besigned into a domain) associated with a videoconference. The user maywant to present, provide, cast, or capture and mirror content on acomputing device of the user to the videoconference. In these cases, inorder for the user to be able to provide content to the videoconference,a user can initiate “knocking”. For example, a user computing device cansend a request message to a host (or presenter) computing device (acomputing device of a host of or a presenter in the videoconference).The host computing device can present, provide, cast, or capture andmirror content to the videoconference. The host computing device canreceive the request message and display the request message to the host.The host can approve the request and the host computing device can sendan approval message to the user computing device. Once the approvalmessage is received, the user computing device can present, provide,cast, or capture and mirror content on the user computing device to thevideoconference.

FIG. 2A is a diagram that shows an example user interface (UI) 202 on adisplay device (e.g., the display device 162) included in avideoconferencing system (e.g., the videoconferencing system 158). Alsodisplayed on the display device 162 is a current time 216. One or moreusers (participants) who would like to participate in a meeting canenter a conference room where the videoconferencing system 158 islocated at approximately 3:55pm and see the UI 202 displayed on thedisplay device 162. The UI 202 provides indications of one or moremeetings that are scheduled for the conference room that one or more ofthe users can choose to participate in (e.g., provide content to asdescribed above with reference to FIGS. 1A, 1B, and 1C).

FIG. 2B is a diagram that shows an example videoconference 200 thatincludes a first participant 210, a second participant 212, and a thirdparticipant 214. The videoconference 200 includes the use of thevideoconferencing system 158. In the example videoconference 200, thefirst participant 210 and the second participant 212 are locatedproximate to the videoconferencing system 158 (e.g., the firstparticipant 210 and the second participant 212 are sitting together in aconference room (e.g., conference room 1900-03L) where thevideoconferencing system 158 is located). The third participant 214 isat a location remote from the conference room and the videoconferencingsystem 158. For example, the third participant 214 can be located in anoffice outside of the conference room but in the same building as theconference room, the third participant 214 can be located in anotherbuilding, or the third participant 214 can be working from home.

The first participant 210 can be a user of the computing device 102 a asshown in FIGS. 1A, 1B, and 1C. The first participant 210 can be a hostor initiator of the videoconference 200. Referring to FIG. 1C, the firstparticipant 210 can select the menu entry 126 b in order to providecontent displayed on the display device 120 (e.g., the car image 180displayed in the tab 114 a) to the videoconferencing system 158. Asdescribed, the menu entry 126 b is provided on the pull-down menu 138based on the detected proximity of the videoconferencing system 158 tothe computing device 102 a. In response to the selection of the menuentry 126 b, the videoconferencing system 158 can display the UI 202 onthe display device 162. For example, meeting menu entry 220 indicatesthat a meeting is scheduled for the conference room (e.g., conferenceroom 1900-03L) at 4:00pm (in five minutes). The first participant 210can select the meeting menu entry 220 using, for example, the remotecontrol 168 included in the videoconferencing system 158. Based on theselection of the meeting menu entry 220, the content displayed on thedisplay device 120 (e.g., the car image 180 displayed in the tab 114 a)is provided (casted, captured and mirrored) to the videoconferencingdevice 160 and displayed on the display device 162 as videoconferencingcontent 218. The first participant 210 has now joined a meeting (e.g.,Transportation-Types) scheduled for the conference room (e.g.,conference room 1900-03L) and the use of the videoconferencing system158.

In some implementations, the first participant 210 may choose not tojoin a scheduled meeting for the conference room. The first participant210 can select the meeting menu entry 222 using, for example, the remotecontrol 168 included in the videoconferencing system 158. Based on theselection of the meeting menu entry 222, the first participant 210 canstart a different or new meeting. The content displayed on the displaydevice 120 (e.g., the car image 180 displayed in the tab 114 a) isprovided (casted, captured and mirrored) to the videoconferencing device160 and displayed on the display device 162 as the videoconferencingcontent 218. The meeting menu entry 220 and the meeting menu entry 222can be considered identifiers for respective meetings. The firstparticipant 210 can select a cancel entry 224 to exit the UI 202.

In some implementations, a display device (e.g., the display device 120)of a computing device (e.g., the computing device 102 a) that isproximate to the videoconferencing system 158 can display a userinterface similar to the UI 202. In some cases, the display device 162may not also display the UI 202. In some cases, the display device 162may also display the UI 202. In these implementations, the user of thecomputing device (e.g., the first participant 210) can make meetingselections using the computing device without the need to interact withthe videoconferencing system 158, which would necessitate locating andusing the remote control 168.

The display device 162 includes an indication of a videoconferencingsystem name 204. A videoconferencing system can have associated with ita videoconferencing system name that can be permanently assignedto/associated with the videoconferencing system. In someimplementations, the videoconferencing system name can be a name for aconference room where the videoconferencing system is located.

The display device 162 includes an indication of a videoconferencingsystem URL 206. In addition, or in the alternative, a videoconferencingsystem can have associated with it a videoconferencing system URL. Forexample, for users/participants in a videoconference that may not besigned into the domain that includes the videoconferencing system 158,the videoconferencing system URL 206 can provide a webpage that the usercan access in order to be able to participate in the videoconference.The videoconferencing system URL 206 can provide a mechanism for theuser to sign into the domain in order to provide content to thevideoconference (allow access to the videoconferencing system 158). Insome implementations, referring to the description of “knocking” above,the user may receive a code or password included in the approval messagethat, if entered into a UI provided by the webpage, allows the user toaccess and provide content to the videoconference.

Users invited to a meeting (e.g., Transportation-Types) can view thecontent presented at the meeting by joining the meeting. In someimplementations, a user can be signed into the same domain as thevideoconferencing system. The user may have a calendar entry for themeeting. Selecting the calendar entry for the meeting can place the useras a participant in the meeting. As a participant, the user can viewvideoconferencing content. In some implementations, a user can beprovided with the videoconferencing system URL 206 that can enable theuser to view the content presented at the meeting. One or moreadditional authentication steps may be needed in order for a user toprovide content to the videoconference (e.g., knocking). For example,the third participant 214 can view the videoconferencing content 218 ona display device 232 included in a computing device 230.

The computing device 240 can be determined to be proximate to thevideoconferencing system 158 using one or more of the systems andprocesses described herein. As shown in FIG. 2B, the second participant212 can have displayed on a display device 242 included in a computingdevice 240 content different from the videoconferencing content 218. Insome cases, though proximate to the videoconferencing system 158, thesecond participant 212 may not need to or want to provide content to thevideoconference. The second participant 212 can be a participant in thevideoconference based on the presence of the computing device 240proximate to the videoconferencing system 158.

FIG. 2C is a diagram that shows an example of a pop-up menu 250 that candisplay indications of the information and data determined by, referringto FIG. 1B, the discovery APIs 150 and provided by the server 142 a tothe computing device 240. Menu entry 252 a is indicative of a conferencethat the second participant 212 may be invited to participate in. Menuentry 252 b is indicative of the videoconferencing system 158 that thecopresence API 156 has determined is in proximity to the computingdevice 240. The menu entries 252 a-b can be considered identifiers forrespective meetings. The second participant 212 can present, provide,cast, or capture and mirror information and data being displayed on thedisplay device 242 (e.g., a motorcycle image 256) to thevideoconferencing device 160 based on the detected proximity of thecomputing device 240 to the videoconferencing system 158 (thevideoconferencing device 160). In this example, the second participantmay not require pre-authorization to provide content to thevideoconference 200.

For example, the second participant 212 is running avideoconferencing-enabled application on the computing device 240. Thesecond participant 212 can select a videoconferencing icon 254. Thecomputing device 240 can display the pop-up menu 250 on the displaydevice 242 in response to the selection of the videoconferencing icon254. The second participant can select the menu entry 252 b to providethe information and data being displayed on the display device 242(e.g., a motorcycle image 256 (as an example image)) to thevideoconferencing device 160 in source form. For example, a URL to thecontent can be provided/sent to the videoconferencing device 160 as wellas the other participants in the videoconference. In some cases, theinformation and data being displayed on the display device 242 can bedifferent from the content provided/sent to the videoconferencing device160 as well as the other participants in the videoconference. Forexample, the content provided/sent to the videoconferencing device 160as well as the other participants in the videoconference by a back-endserver.

FIG. 2D is a diagram that shows the example videoconference 200 wherethe second participant 212 provides videoconferencing content 260. Thedisplay device 162 can display the videoconferencing content 260provided, casted, or captured and mirrored by the computing device 240to the videoconferencing device 160. As shown in FIG. 2D, the displaydevice 120 of the computing device 102 a can continue to display the carimage 180 in the tab 114 a. The third participant 214 now can view thevideoconferencing content 260 on the display device 232 of the computingdevice 230.

In addition, since this does not kick the first participant 210 out ofthe videoconference, both content items (videoconferencing content 260and videoconferencing content 218) can be presented in thevideoconference. In some implementations, a videoconferencing system caninclude multiple display devices. In these implementations, thevideoconferencing content 218 can be displayed on one display devicewhile the videoconferencing content 260 can be displayed on anotherdisplay device. In some implementations, a participant in thevideoconference may select which videoconference content they would liketo view on a display device included in a computing device.

FIG. 2E shows an example of a pull-down menu 270 that can displayindications of information and data determined by, referring to FIG. 1B,the discovery APIs 150 and provided by the server 142 a to the computingdevice 230. Menu entry 272 a and menu entry 272 c are indicative ofnamed devices (e.g., a TV located in a bedroom and a TV located in arecreation room) that are on the same network as the computing device230. In addition, menu entry 272 b can be indicative of a conferencethat the third participant 214 has as an entry on a calendar for thethird participant 214. Menu entry 272 d is indicative of avideoconference that the third participant 214 has beenauthenticated/authorized to provide content to as described herein. Forexample, the menu entry 272 d is indicative of the videoconference 200,where the third participant 214 can provide content to thevideoconferencing device 160. The menu entry 272 b and menu entry 272 dcan be considered identifiers for respective meetings.

For example, the third participant 214 can be running a browser-basedapplication that displays a bicycle image 274 in a tab 276 of a webbrowser application. The third participant 214 can select avideoconferencing icon 278. Based on the selection, a videoconferenceclient can project (provide) content to the videoconferencing system 158while a bicycle image 274 (as an example image) is displayed in a tab276 of a web browser application. The computing device 230 can present,provide, cast, or capture and mirror the information and data includedin the tab 276 (e.g., the bicycle image 274) to the videoconferencingdevice 160. The videoconferencing system 158 can display the informationand data included in the tab 276 (e.g., the bicycle image 274) on thedisplay device 162.

FIG. 2F is a diagram that shows the example videoconference 200 wherethe third participant 214 provides videoconferencing content 280. Thedisplay device 162 can display the videoconferencing content 280provided (casted, or captured and mirrored) by the computing device 230to the videoconferencing device 160. As shown in FIG. 2F, the displaydevice 120 of the computing device 102 a can continue to display the carimage 180 in the tab 114 a. The display device 242 of the computingdevice 240 can continue to display the motorcycle image 256 in thevideoconferencing-enabled application .

FIG. 2G is a diagram that shows the content displayed on the displaydevice 120 (e.g., the car image 180 displayed in the tab 114 a) furtherincluding an alert window 290. The computing device 102 a can displaythe alert window 290 when, for example, the first participant 210receives an incoming email or message. As shown in FIG. 2G (andreferring to FIG. 2B), the computing device 102 a can display the alertwindow 290 while the computing device 102 a is providing (casting, orcapturing and mirroring) the information and data included in the tab114 a (e.g., the car image 180). In the example shown in FIG. 2G, thecomputing device 102 a continues to provide the content of the tab 114 a(e.g., the car image 180) to the videoconferencing device 160 withoutincluding the content of the alert window 290 as part of the contentprovided to the videoconferencing device 160.

FIG. 2H is a diagram that shows the first participant 210, referring toFIG. 1A, navigating to/selecting the tab 114 b of the web browserapplication 110. The first participant 210 can select another tab (e.g.,tab 114 b) in order to interact with another browser-based applicationor to view other information and data while the information and data(the contents) displayed in the tab 114 a (e.g., the car image 180)remain displayed on the display device 162 included in thevideoconferencing system 158. The first participant 210 changing thewindow or tab that they are currently viewing to view or interact withanother tab of the web browser application may not change what is beingprojected/provided to the display device 162. For example, the firstparticipant 210 may access information and data related to the topic ofthe videoconference 200 (e.g., car model data 292) from a browser-basedapplication 294 running/executing in the tab 114 b of the web browserapplication 110. In the example shown in FIG. 2H, the computing device102 a continues to provide the content of the tab 114 a (e.g., the carimage 180) to the videoconferencing device 160 while the firstparticipant 210 navigates to the tab 114 b and runs the browser-basedapplication.

The first participant 210 can interact with content included in the tab114 a (e.g., they can provide input to and view output in the tab 114 ausing the computing device 102 a), the interactions beingdisplayed/mirrored on the display device 162 of the videoconferencingsystem 158. In addition, the first participant 210 can switch/navigateto the tab 114 b without providing (casting, or capturing and mirroring)the information and data (the contents) of the tab 114 b for viewing onthe display device 162. The user can switch from the tab 114 a to thetab 114 b in the web browser application 110 while the contents of thetab 114 a continue to be provided to the videoconferencing device 160and displayed on the display device 162. The first participant 210 caninteract with a browser-based application running/executing in the tab114 b of the web browser application 110 without the contents of the tab114 b and the interactions occurring within the tab 114 b beingdisplayed on the display device 162 of the videoconferencing system 158.This can allow the first participant 210 to access/interact with othercontent without the participants of the videoconference being able toview the other content.

For example, the first participant 210 may display the car model data292 in the tab 114 b for a car whose image is the car image 180displayed in the tab 114 a of the web browser application 110. The firstparticipant 210 can display the car model data 292 while the secondparticipant 212 and the third participant 214 view the videoconferencingcontent 218. The first participant 210 can access the car model data292, which may be considered confidential, for use during thevideoconference without projecting/providing the car model data 292 tothe videoconferencing device 160.

Referring to FIGS. 1C and 2A, the computing device 102 a can display thepull-down menu 138 on the display device 120 in response to receiving aselection of the videoconferencing icon 118. The menu entry 126 bindicates that the videoconferencing system 158 is in proximity to thecomputing device 102 a. The first participant 210 can select the menuentry 126 b. In response to the selection of the menu entry 126 b, thevideoconferencing system 158 can display the UI 202 on the displaydevice 162. The meeting menu entry 220 indicates that a meeting isscheduled for the conference room (e.g., conference room 1900-03L) at4:00pm (in five minutes). In some cases, the first participant 210 canselect the meeting menu entry 222. For example, the first participant210 can select the meeting menu entry 220 using the remote control 168included in the videoconferencing system 158.

FIG. 2I is a diagram that shows an example UI 282 displayed on thedisplay device 162 that allows a user to enter a name for a newvideoconference. For example, in response to the selection of themeeting menu entry 222 by the first participant 210, the display device162 can display the UI 282. The first participant can enter a name forthe new meeting in the input box 284. In some cases, the meeting namecan include/specify a domain (e.g., meeting@domain, domain/meeting). Asdescribed herein, users in proximity to the videoconferencing system 158can automatically join and provide content to the videoconference. Asdescribed herein, other users can participate by way of one or moreprocesses that include invitations and knocking.

In some implementations as described herein, the first participant 210can use a keyboard included on the remote control 168 to enter themeeting name in the input box 284. In other implementations as describedherein, the display device (e.g., the display device 120) of a computingdevice (e.g., the computing device 102 a) that is proximate to thevideoconferencing system 158 can display a user interface similar to theUI 282. In some cases, the display device 162 may not also display theUI 282. In some cases, the display device 162 may also display the UI282. In these implementations, the user of the computing device (e.g.,the first participant 210) can enter a meeting name using a keyboard orother type on input device included in the computing device without theneed to interact with the videoconferencing system 158, which wouldnecessitate locating and using the remote control 168. The firstparticipant 210 can select a cancel menu option 288 to exit the UI 282.The first participant 210 can select a cast menu option 286 to castcontent on a computing device of the first participant 210 to the newvideoconference.

FIG. 3A is a diagram that shows an example videoconference 300 thatincludes a first participant 310, a second participant 312, and a thirdparticipant 314. In the example videoconference 300, the firstparticipant 310, the second participant 312, and the third participant314 are located proximate to a videoconferencing system 358 (e.g., thefirst participant 310, the second participant 312, and the thirdparticipant 314 are sitting together in a conference room (e.g.,conference room 2100-08L) where the videoconferencing system 358 islocated). For example, the first participant 310 can be a user of thecomputing device 102 b as shown in FIGS. 1A, 1B, and 1C. Thevideoconferencing system 358 can be similar to the videoconferencingsystem 158. The first participant 310 can be a host or initiator of thevideoconference 300. The first participant 310 can enter the conferenceroom with the computing device 102 b.

FIG. 3B shows an example of a pull-down menu 338 that can displayindications of the information and data determined by, referring toFIGS. 1A and 1B, the discovery APIs 150 and provided by the server 142 ato the computing device 102 b. In the example shown in FIG. 3B, thecomputing device 102 b can run a web browser application. The computingdevice 102 b can send/provide the information and data (content)displayed in a web browser UI of a particular tab (e.g., tab 314 a) to avideoconferencing device 360 for display on a display device 362included in the videoconferencing system 358. In some implementations,the system UI of the computing device 102 b send/provide the informationand data (content) to the videoconferencing device 360.

The computing device 102 b can display the pull-down menu 338 in thedisplay area 124 in response to receiving a selection of avideoconferencing icon 318. The menu entry 326 a indicates that thevideoconferencing system 358 is in proximity to the computing device 102b. For example, the menu entry 326 a can be a name for the conferenceroom that the videoconferencing system 358 resides in. The firstparticipant 310 can select the menu entry 326 a. In cases where there isno meeting scheduled for the conference room and the videoconferencingsystem residing in the conference room, and where there is no meetingscheduled within a certain time period within a time when the menu entry326 a is selected, the selection of the menu entry 326 a canautomatically launch/start the videoconference 300 that makes use of thevideoconferencing system 358. For example, at 6:00pm the firstparticipant 310, the second participant 312, and the third participant314 are sitting together in a conference room (e.g., conference room2100-08L) where the videoconferencing system 358 is located. The firstparticipant 310 selects the menu entry 326 a. A meeting was scheduledfor the videoconferencing system 358 in the conference room (e.g.,conference room 2100-08L) from 4:00pm to 5:00pm but no other meetingsare scheduled for the remainder of the day. The selection of the menuentry 326 a automatically starts/launches the videoconference 300.

FIG. 3C is a diagram that shows an example UI 330 displayed in thedisplay area 124 that allows a user to enter a name for a newvideoconference. In some implementations, when the selection of the menuentry 326 a automatically starts/launches the videoconference 300, theUI 330 can be displayed in the display area 124 to allow the firstparticipant 310 to enter a name for the new videoconference in the inputbox 332. The first participant 310 can select a cast button 334 to startthe videoconference on the videoconferencing system 358. As describedherein, users in proximity to the videoconferencing system 358 canautomatically join and provide content to the videoconference. Asdescribed herein, other users can participate by way of one or moreprocesses that include invitations and knocking.

In some implementations, as described with reference to FIGS. 3A-C, oneor more individuals (e.g., the first participant 310, the secondparticipant 312, and the third participant 314) can walk into (enter) aconference room that includes a videoconferencing system (e.g., thevideoconferencing system 358) and easily start a videoconference on anidle videoconferencing system (e.g., the videoconferencing system 358).In these implementations, the videoconference can default to having noaudio input (e.g., a microphone 364 is muted or not activated) and candefault to disabling a camera 366 (e.g., the camera 366 is notactivated). The display device 362 can display a microphone indicator340 with a slash or line through the microphone indicator 340 indicatingthat the microphone is muted. The display device 362 can display acamera indicator 342 with a slash or line through the camera indicator342 indicating that the camera is disabled. Muting the microphone 364and disabling the camera 366 can allow the first participant 310 to justpresent, provide, cast, or capture and mirror the content of theinformation and data included in the display area 124. In theseimplementations, the display device 362 can be used to display/projectcontent to the first participant 310, the second participant 312, andthe third participant 314 located in the conference room withoutcreating/allowing the possibility of being able to remotely activate thecamera 366 and/or the microphone 364 for the purpose of eavesdropping.The one or more individuals can use a remote control 368 when startingthe videoconference on an idle videoconferencing system.

The videoconference can enable audio output. For example, the firstparticipant 310 can share content that includes audio content thateveryone in the videoconference can hear. Audio input from thevideoconferencing system 358, however, may not be captured if, forexample, the videoconference was started from another device (e.g., adevice other than the computing device 102 b..

In some implementations, data deduplication can prevent (eliminate)duplicate copies of the same meeting from being displayed to a user in apull-down menu of target conferences and/or devices. For example,referring to FIGS. 1C, 2A, and 2B, the first participant 210 can havethe Transportation-Types meeting (the meeting indicated by meeting menuentry 220) on a calendar for the first participant 210. As such,referring to FIG. 1C, in addition to the menu entry 126 b indicative ofthe proximity of the computing device 102 a to the videoconferencingsystem 158, an additional menu entry for the Transportation-Typesmeeting could also be included in the pull-down menu 138. In this case,the menu entry 126 b and the calendar entry for the Transportation-Typesmeeting are related to the same meeting. In this example, the menu entry126 b indicative of the proximity of the computing device 102 a to thevideoconferencing system 158 was included in the pull-down menu 138 andan entry for the Transportation-Types meeting was not included. Inanother example, the menu entry 126 b indicative of the proximity of thecomputing device 102 a to the videoconferencing system 158 may not beincluded in the pull-down menu 138 and an entry for theTransportation-Types meeting may be included.

In one case, a user with a computing device may be proximate to avideoconferencing system and may also have a videoconference scheduledon a calendar for the user at the same time. In this case, since theuser cannot be in two different places at the same time, a pull-downmenu listing target meetings and videoconferencing devices can list thevideoconferencing system higher in the list than the videoconferencescheduled on the calendar for the user. For example, referring to FIGS.1C, 2A, and 2B, the first participant 210 can have a weekly meeting withKatie scheduled on a calendar for the first participant 210 as indicatedby menu entry 126 c. The weekly meeting with Katie may be scheduled atthe same time as the Transportation-Types meeting being held in theconference room 1900-03L. The menu entry 126 b is indicative of theproximity of the computing device 102 a to the videoconferencing system158 located in the conference room (conference room 1900-03L) where theTransportation-Types meeting is being held. In this case, the menu entry126 b is placed higher in the list of target meetings andvideoconferencing devices than the weekly meeting with Katie.

FIG. 4 is a flowchart that illustrates a first method 400 of providingcontent to a videoconference. In some implementations, the systemsdescribed herein can implement the method 400. For example, the method400 can be described referring to FIGS. 1A-C, 2A-I, and 3A-C.

Content in an application executing on a computing device is displayedon a display device included in the computing device (block 402). Forexample, the user can be running a browser-based application (e.g., thebrowser-based application 128) that displays the car image 180 in thetab 114 a. It is determined that the computing device is proximate to avideoconferencing system (block 404). For example, the copresence API156 can determine/discover videoconferencing systems proximate to thecomputing device 102 a. The videoconferencing systems in proximity tothe computing device can be determined/discovered using one or more ofthe processes disclosed herein. At least one identifier associated witha videoconference is displayed in a user interface on the display device(block 406). For example, the pull-down menu 138 can display the atleast one identifier associated with a videoconference (e.g., menu entry126 b). The at least one identifier can be representative of informationand data determined by the discovery APIs 150 and provided by the server142 a to the computing device 102 a in response to the remote procedurecalls 103. A selection of the at least one identifier is received (block408). For example, the selection of the menu entry 126 b can bereceived. The videoconference is initiated on the videoconferencingsystem in response to receiving the selection of the at least oneidentifier (block 410). Content is provided for display on a displaydevice included in the videoconferencing system (block 412). Forexample, the content displayed on the display device 120 (e.g., the carimage 180 displayed in the tab 114 a) is provided (casted, captured andmirrored) to the videoconferencing device 160 and displayed on thedisplay device 162 as videoconferencing content 218.

FIG. 5 shows an example of a generic computer device 500 and a genericmobile computer device 550, which may be used with the techniquesdescribed here. Computing device 500 is intended to represent variousforms of digital computers, such as laptops, desktops, workstations,personal digital assistants, servers, blade servers, mainframes, andother appropriate computers. Computing device 550 is intended torepresent various forms of mobile devices, such as personal digitalassistants, cellular telephones, smart phones, and other similarcomputing devices. The components shown here, their connections andrelationships, and their functions, are meant to be exemplary only, andare not meant to limit implementations of the inventions describedand/or claimed in this document.

Computing device 500 includes a processor 502, memory 504, a storagedevice 506, a high-speed interface 508 connecting to memory 504 andhigh-speed expansion ports 510, and a low speed interface 512 connectingto low speed bus 514 and storage device 506. Each of the components 502,504, 506, 508, 510, and 512, are interconnected using various busses,and may be mounted on a common motherboard or in other manners asappropriate. The processor 502 can process instructions for executionwithin the computing device 500, including instructions stored in thememory 504 or on the storage device 506 to display graphical informationfor a GUI on an external input/output device, such as display 516coupled to high speed interface 508. In other implementations, multipleprocessors and/or multiple buses may be used, as appropriate, along withmultiple memories and types of memory. Also, multiple computing devices500 may be connected, with each device providing portions of thenecessary operations (e.g., as a server bank, a group of blade servers,or a multi-processor system).

The memory 504 stores information within the computing device 500. Inone implementation, the memory 504 is a volatile memory unit or units.In another implementation, the memory 504 is a non-volatile memory unitor units. The memory 504 may also be another form of computer-readablemedium, such as a magnetic or optical disk.

The storage device 506 is capable of providing mass storage for thecomputing device 500. In one implementation, the storage device 506 maybe or contain a computer-readable medium, such as a floppy disk device,a hard disk device, an optical disk device, or a tape device, a flashmemory or other similar solid state memory device, or an array ofdevices, including devices in a storage area network or otherconfigurations. A computer program product can be tangibly embodied inan information carrier. The computer program product may also containinstructions that, when executed, perform one or more methods, such asthose described above. The information carrier is a computer- ormachine-readable medium, such as the memory 504, the storage device 506,or memory on processor 502.

The high speed controller 508 manages bandwidth-intensive operations forthe computing device 500, while the low speed controller 512 manageslower bandwidth-intensive operations. Such allocation of functions isexemplary only. In one implementation, the high-speed controller 508 iscoupled to memory 504, display 516 (e.g., through a graphics processoror accelerator), and to high-speed expansion ports 510, which may acceptvarious expansion cards (not shown). In the implementation, low-speedcontroller 512 is coupled to storage device 506 and low-speed expansionport 514. The low-speed expansion port, which may include variouscommunication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet)may be coupled to one or more input/output devices, such as a keyboard,a pointing device, a scanner, or a networking device such as a switch orrouter, e.g., through a network adapter.

The computing device 500 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as astandard server 520, or multiple times in a group of such servers. Itmay also be implemented as part of a rack server system 524. Inaddition, it may be implemented in a personal computer such as a laptopcomputer 522. Alternatively, components from computing device 500 may becombined with other components in a mobile device (not shown), such asdevice 550. Each of such devices may contain one or more of computingdevice 500, 550, and an entire system may be made up of multiplecomputing devices 500, 550 communicating with each other.

Computing device 550 includes a processor 552, memory 564, aninput/output device such as a display 554, a communication interface566, and a transceiver 568, among other components. The device 550 mayalso be provided with a storage device, such as a microdrive or otherdevice, to provide additional storage. Each of the components 550, 552,564, 554, 566, and 568, are interconnected using various buses, andseveral of the components may be mounted on a common motherboard or inother manners as appropriate.

The processor 552 can execute instructions within the computing device550, including instructions stored in the memory 564. The processor maybe implemented as a chipset of chips that include separate and multipleanalog and digital processors. The processor may provide, for example,for coordination of the other components of the device 550, such ascontrol of user interfaces, applications run by device 550, and wirelesscommunication by device 550.

Processor 552 may communicate with a user through control interface 558and display interface 556 coupled to a display 554. The display 554 maybe, for example, a TFT LCD (Thin-Film-Transistor Liquid Crystal Display)or an OLED (Organic Light Emitting Diode) display, or other appropriatedisplay technology. The display interface 556 may comprise appropriatecircuitry for driving the display 554 to present graphical and otherinformation to a user. The control interface 558 may receive commandsfrom a user and convert them for submission to the processor 552. Inaddition, an external interface 562 may be provide in communication withprocessor 552, so as to enable near area communication of device 550with other devices. External interface 562 may provide, for example, forwired communication in some implementations, or for wirelesscommunication in other implementations, and multiple interfaces may alsobe used.

The memory 564 stores information within the computing device 550. Thememory 564 can be implemented as one or more of a computer-readablemedium or media, a volatile memory unit or units, or a non-volatilememory unit or units. Expansion memory 574 may also be provided andconnected to device 550 through expansion interface 572, which mayinclude, for example, a SIMM (Single In Line Memory Module) cardinterface. Such expansion memory 574 may provide extra storage space fordevice 550, or may also store applications or other information fordevice 550. Specifically, expansion memory 574 may include instructionsto carry out or supplement the processes described above, and mayinclude secure information also. Thus, for example, expansion memory 574may be provide as a security module for device 550, and may beprogrammed with instructions that permit secure use of device 550. Inaddition, secure applications may be provided via the SIMM cards, alongwith additional information, such as placing identifying information onthe SIMM card in a non-hackable manner.

The memory may include, for example, flash memory and/or NVRAM memory,as discussed below. In one implementation, a computer program product istangibly embodied in an information carrier. The computer programproduct contains instructions that, when executed, perform one or moremethods, such as those described above. The information carrier is acomputer- or machine-readable medium, such as the memory 564, expansionmemory 574, or memory on processor 552, that may be received, forexample, over transceiver 568 or external interface 562.

Device 550 may communicate wirelessly through communication interface566, which may include digital signal processing circuitry wherenecessary. Communication interface 566 may provide for communicationsunder various modes or protocols, such as GSM voice calls, SMS, EMS, orMMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others.Such communication may occur, for example, through radio-frequencytransceiver 568. In addition, short-range communication may occur, suchas using a Bluetooth, WiFi, or other such transceiver (not shown). Inaddition, GPS (Global Positioning System) receiver module 570 mayprovide additional navigation- and location-related wireless data todevice 550, which may be used as appropriate by applications running ondevice 550.

Device 550 may also communicate audibly using audio codec 560, which mayreceive spoken information from a user and convert it to usable digitalinformation. Audio codec 560 may likewise generate audible sound for auser, such as through a speaker, e.g., in a handset of device 550. Suchsound may include sound from voice telephone calls, may include recordedsound (e.g., voice messages, music files, etc.) and may also includesound generated by applications operating on device 550.

The computing device 550 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as acellular telephone 580. It may also be implemented as part of a smartphone 582, personal digital assistant, or other similar mobile device.

Various implementations of the systems and techniques described here canbe realized in digital electronic circuitry, integrated circuitry,specially designed ASICs (application specific integrated circuits),computer hardware, firmware, software, and/or combinations thereof.These various implementations can include implementation in one or morecomputer programs that are executable and/or interpretable on aprogrammable system including at least one programmable processor, whichmay be special or general purpose, coupled to receive data andinstructions from, and to transmit data and instructions to, a storagesystem, at least one input device, and at least one output device.

These computer programs (also known as programs, software, softwareapplications or code) include machine instructions for a programmableprocessor, and can be implemented in a high-level procedural and/orobject-oriented programming language, and/or in assembly/machinelanguage. As used herein, the terms “machine-readable medium”“computer-readable medium” refers to any computer program product,apparatus and/or device (e.g., magnetic discs, optical disks, memory,Programmable Logic Devices (PLDs)) used to provide machine instructionsand/or data to a programmable processor, including a machine-readablemedium that receives machine instructions as a machine-readable signal.The term “machine-readable signal” refers to any signal used to providemachine instructions and/or data to a programmable processor.

To provide for interaction with a user, the systems and techniquesdescribed here can be implemented on a computer having a display device(e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor)for displaying information to the user and a keyboard and a pointingdevice (e.g., a mouse or a trackball) by which the user can provideinput to the computer. Other kinds of devices can be used to provide forinteraction with a user as well; for example, feedback provided to theuser can be any form of sensory feedback (e.g., visual feedback,auditory feedback, or tactile feedback); and input from the user can bereceived in any form, including acoustic, speech, or tactile input.

The systems and techniques described here can be implemented in acomputing system that includes a back end component (e.g., as a dataserver), or that includes a middleware component (e.g., an applicationserver), or that includes a front end component (e.g., a client computerhaving a graphical user interface or a Web browser through which a usercan interact with an implementation of the systems and techniquesdescribed here), or any combination of such back end, middleware, orfront end components. The components of the system can be interconnectedby any form or medium of digital data communication (e.g., acommunication network). Examples of communication networks include alocal area network (“LAN”), a wide area network (“WAN”), and theInternet.

The computing system can include clients and servers. A client andserver are generally remote from each other and can interact through acommunication network. The relationship of client and server arises byvirtue of computer programs running on the respective computers andhaving a client-server relationship to each other.

The computing system can include clients and servers. A client andserver are generally remote from each other and can interact through acommunication network. The relationship of client and server arises byvirtue of computer programs running on the respective computers andhaving a client-server relationship to each other.

In situations in which the systems and methods discussed herein collectpersonal information about users, or may make use of personalinformation, the users may be provided with an opportunity to controlwhether programs or features collect user information (e.g., informationabout a user’s social network, social actions or activities, profession,a user’s preferences, or a user’s current location), or to controlwhether and/or how to receive content from the content server that maybe more relevant to the user. In addition, certain data may be treatedin one or more ways before it is stored or used, so that personallyidentifiable information is removed. For example, a user’s identity maybe treated so that no personally identifiable information can bedetermined for the user, or a user’s geographic location may begeneralized where location information is obtained (such as to a city,ZIP code, or state level), so that a particular location of a usercannot be determined. Thus, the user may have control over howinformation is collected about the user and used by a content server.

A number of embodiments have been described. Nevertheless, it will beunderstood that various modifications may be made without departing fromthe spirit and scope of the specification.

In addition, the logic flows depicted in the figures do not require theparticular order shown, or sequential order, to achieve desirableresults. In addition, other steps may be provided, or steps may beeliminated, from the described flows, and other components may be addedto, or removed from, the described systems. Accordingly, otherembodiments are within the scope of the following claims.

What is claimed is:
 1. A method comprising: displaying, on a displaydevice of a computing device, content in an application executing on thecomputing device; displaying, in a user interface on the display device,a plurality of menu items, wherein each menu item of the plurality ofmenu items indicates a named device to which the content is eligible tobe cast and is connected with a same local area network as the computingdevice; receiving a selection of a menu item from the plurality of menuitems; and in response to receiving the selection of the menu item,causing the content to be casted to the named device for presentation.2. The method of claim 1, wherein the application is a web browserapplication.
 3. The method of claim 2, wherein the content is includedin a tab of the web browser application that is being displayed on thedisplay device included in the computing device.
 4. The method of claim3, wherein the tab is a first tab, and wherein the method furthercomprises: displaying, on the display device of the computing device,other content in a second tab of the web browser application whilecontinuing to provide the content included in the first tab of the webbrowser application for display on the display device.
 5. The method ofclaim 1, wherein a name for each named device is indicative of alocation.
 6. The method of claim 1, where at least one of the menu itemsof the plurality of menu items is indicative of a videoconference. 7.The method of claim 1, wherein the plurality of menu items is displayedin response to selection of a graphical icon on the computing device. 8.The method of claim 1, further comprising determining that the computingdevice is associated with a videoconferencing system.
 9. The method ofclaim 8, wherein the computing device is located in a room with thevideoconferencing system.
 10. A system comprising: a computing deviceincluding a hardware processor that: displays, on a display device,content in an application executing on the computing device; displays,in a user interface on the display device, a plurality of menu items,wherein each menu item of the plurality of menu items indicates a nameddevice to which the content is eligible to be cast and is connected witha same local area network as the computing device; receives a selectionof a menu item from the plurality of menu items; and in response toreceiving the selection of the menu item, causes the content to be castto the named device for presentation.
 11. The system of claim 10,wherein the application is a web browser application.
 12. The system ofclaim 11, wherein the content is presented within a tab of the webbrowser application that is being displayed on the display deviceincluded in the computing device.
 13. The system of claim 12, whereinthe tab is a first tab, and wherein the computing device presents, onthe display device, other content in a second tab of the web browserapplication while the content presented in the first tab of the webbrowser application is cast to the named device for presentation. 14.The system of claim 10, wherein a name for each named device isindicative of a location.
 15. The system of claim 10, where at least oneof the menu items of the plurality of menu items is indicative of avideoconference.
 16. The system of claim 10, wherein the plurality ofmenu items is displayed in response to selection of a graphical icon onthe computing device.
 17. The system of claim 10, wherein the computingdevice determines that the computing device is associated with avideoconferencing system.
 18. The system of claim 17, wherein thecomputing device is located in a room with the videoconferencing system.19. A non-transitory computer-readable medium containing computerexecutable instructions that, when executed by a processor, cause theprocessor to perform a method, the method comprising: displaying, on adisplay device of a computing device, content in an applicationexecuting on the computing device; displaying, in a user interface onthe display device, a plurality of menu items, wherein each menu item ofthe plurality of menu items indicates a named device to which thecontent is eligible to be cast and is connected with a same local areanetwork as the computing device; receiving a selection of a menu itemfrom the plurality of menu items; and in response to receiving theselection of the menu item, causing the content to be casted to thenamed device.
 20. The non-transitory computer-readable medium of claim19, wherein: the application is a web browser application; the contentis presented within a first tab of the web browser application that isbeing displayed on the display device included in the computing device;and the method further comprises: presenting, on the display device ofthe computing device, other content in a second tab of the web browserapplication while the content presented in the first tab of the webbrowser application is casted to the named device.